package top.glkj.hms.service;

import top.glkj.hms.entity.Permission;
import top.glkj.hms.utils.Result;

import java.util.List;
import java.util.Map;

/**
 * @author : xgl
 * @version : 0.0.1
 * @date :2020/11/16 23:43
 */
public interface PermissionService extends BaseService<Permission> {
    /**
     * 分页查询
     *
     * @param page 当前页码
     * @param size 页面大小
     * @return page Role
     */
    Result getPermissionsByPageAndSize(int page, int size);

    /**
     * 分页条件查询
     *
     * @param page    当前页码
     * @param size    页面大小
     * @param argName 参数名
     * @param value   参数值
     * @return page User
     */
    Result getAllPermissionsByPageAndSizeAndArgs(int page, int size, String argName, String value);

    /**
     * 分页查询
     *
     * @param page 当前页码
     * @param size 页面大小
     * @param args 参数键值对
     * @return page User
     */
    Result getAllPermissionsByPageAndSizeAndAnyArgs(int page, int size, Map<String, String> args);

    /**
     * 添加权限
     * @param permission 权限
     * @return  添加结果
     */
    public Result addPermission(Permission permission);

    /**
     * 更新权限
     *
     * @param permission 权限
     * @return 更新权限结果
     */
    public Result updatePermission(Permission permission);

    /**
     *
     * 批量删除权限
     * @param ids 权限id集合
     * @return 批量删除结果
     */
    public Result deletePermission(List<Long> ids);

    /**
     *  批量添加权限
     * @param permissionList 权限列表
     * @return 添加结果
     */
    public Result addAllPermission(List<Permission> permissionList);

    /**
     * 更新资源对照
     * @param pid 权限编号
     * @param ridList 资源列表
     * @return 更新结果
     */
    public Result updatePermissionResources(long pid,List<Long> ridList);

    /**
     * 添加资源对照
     * @param pid 权限编号
     * @param ridList 资源列表
     * @return 添加结果
     */
    public Result addPermissionResources(long pid,List<Long> ridList);

    /**
     * 删除资源对照
     * @param pid 权限编号
     * @param ridList 资源列表
     * @return 删除结果
     */
    public Result deletePermissionResources(long pid,List<Long> ridList);

}
